#ifndef _CRF_LEARN_H
#define _CRF_LEARN_H

// third party includes
#include <string>
#include <boost/shared_ptr.hpp>
#include <boost/shared_array.hpp>

// local includes
#include "param.h"
#include "data.h"
#include "crf_minable.h"
#include "util.h"

// function prototypes
boost::shared_array<double> _crf_learn(GPParameter *param, 
	CRFMinablePtr gp_minable, const std::string &weights);

// learn a classifier
//template<class T>
boost::shared_array<double> crf_learn(GPParameter *param, EventsPtr data, 
             const std::string &model_in, const std::string &model_out);
boost::shared_array<double> flat_learn(GPParameter *param, FlatEventsPtr data, 
             const std::string &model_in, const std::string &model_out);
#endif /* _CRF_LEARN_H */
